package org.Yiran.timetale_re.event;

import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import org.Yiran.timetale_re.item.rune.base.RuneItem;
import org.Yiran.timetale_re.item.rune.base.RuneManager;

/**
 * 符文事件处理器类
 * <p>
 * 该类负责处理与符文相关的游戏事件，包括：
 * 1. 玩家每tick时检查持有的符文并触发持续效果
 * </p>
 */
@Mod.EventBusSubscriber
public class RuneEvents {
    
    // ============================== 玩家Tick事件处理 ==============================
    
    /**
     * 玩家Tick事件处理方法
     * <p>
     * 在服务端玩家每次tick结束时检查玩家是否持有符文物品，
     * 如果持有功能类或增幅类符文，则触发符文的持续效果。
     * </p>
     * 
     * @param event 玩家tick事件
     */
    @SubscribeEvent
    public static void onPlayerTick(TickEvent.PlayerTickEvent event) {
        // 只在服务端的tick结束阶段处理
        if (event.phase == TickEvent.Phase.END && !event.player.level().isClientSide) {
            Player player = event.player;
            
            // 检查玩家是否持有符文
            for (ItemStack stack : player.getInventory().items) {
                if (!stack.isEmpty() && stack.getItem() instanceof RuneItem) {
                    // 只对功能类和增幅类符文进行持续效果处理
                    String category = RuneItem.getRuneCategory(stack);
                    if (RuneItem.FUNCTIONAL.equals(category) || RuneItem.AMPLIFICATION.equals(category)) {
                        RuneManager.onRuneTick(stack, player.level(), player);
                    }
                }
            }
        }
    }
}